package com.candy.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Set;




public class DBDriver {
	
	public static void main(String[] args) {
	
		try {
//			注册或实例化驱动	
			Class.forName("com.mysql.cj.jdbc.Driver");
//			获取数据的链接对象
//			数据库的连接串
//			jdbc:mysql使用jdbc链接mysql数据库
//			localhost要连接的数据库的ip地址，此处的localhost表示本机，等价与127.0.0.1
//			3306表示mysql的端口号
//			database_name：表示要链接的数据库的名字
			String url="jdbc:mysql://localhost:3306/usermanager? characterEncoding=utf8 & useSSL=false & serverTimezone=UTC & rewriteBatchedStatements=true";
//			数据库的用户名
			String username="root";
//			数据库的密码
			String userpwd="123456";
			Connection conn=DriverManager.getConnection(url,username,userpwd);
//			获取数据库发送指令的装置
			Statement ment=conn.createStatement();
			String sql="select * from userinfo";
//			准备一个存储数据的容器
			LinkedList<LinkedHashMap<String, Object>> datalist=new LinkedList<LinkedHashMap<String,Object>>();
			LinkedHashMap<String, Object> eachRow=null;
			
//			获取查询结果集
			ResultSet re=ment.executeQuery(sql);
//			获取元数据
			ResultSetMetaData rm=re.getMetaData();
//			获取数据表中共有多少列
			int count=rm.getColumnCount();
			while(re.next()) {
//				实例化存储每一行信息的map
				eachRow=new LinkedHashMap<String, Object>();
//				遍历处理
				for (int i = 1; i <= count; i++) {
//					存入数据
//					rm.getColumnLabel(i)获取该列的列名
//					re.getObject(rm.getColumnLabel(i))通过列名获取该列的值
					eachRow.put(rm.getColumnLabel(i), re.getObject(rm.getColumnLabel(i)));
				}
				datalist.add(eachRow);
			}
			
//			关闭资源
			re.close();
			ment.close();
			conn.close();
//			测试数据是否存入成功
			for(LinkedHashMap<String, Object> row:datalist) {
//				取出所有key组成的set集合
				Set keyySet=row.keySet();
		
				for(Object key:keyySet) {
					System.out.println("key:"+key+"value:"+row.get(key));
				}
				
				
			}
			
		
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
		
		
		
		
		
	}

}
